home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / SANE.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  9.1 KB  |  323 lines  |  [TEXT/MPS ]

  1. (*
  2.     File:        SANE.mod
  3.  
  4.     Copyright:    © 1983-1995 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Wednesday, January 11, 1995. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs.applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. *)
  16.  
  17. (*$TAGS-*)
  18. (*$CALLING PASCAL*)
  19. MODULE SANE;
  20.  
  21. IMPORT SYSTEM, Types;
  22.  
  23. (* Elems881 mode set by -d Elems881=true on Pascal command line *)
  24.  
  25. (*$IF UNDEFINED Elems881*)
  26. (*$SET Elems881 FALSE*)
  27. (*$END*)
  28.  
  29.  
  30. CONST
  31. (*$IF OPTION mc68881 *)
  32.  
  33. (**======================================================================*
  34.  *    The interface specific to the MC68881 SANE library    *
  35.  *======================================================================**)
  36.  
  37. Inexact* = 8;
  38. DivByZero* = 16;
  39. Underflow* = 32;
  40. Overflow* = 64;
  41. Invalid* = 128;
  42. CurInex1* = 256;
  43. CurInex2* = 512;
  44. CurDivByZero* = 1024;
  45. CurUnderflow* = 2048;
  46. CurOverflow* = 4096;
  47. CurOpError* = 8192;
  48. CurSigNaN* = 16384;
  49. CurBSonUnor* = 32768;
  50.  
  51.  
  52. (*$ELSE*)
  53.  
  54. (**======================================================================*
  55.  *    The interface specific to the software SANE library    *
  56.  *======================================================================**)
  57.  
  58. Invalid* = 1;
  59. Underflow* = 2;
  60. Overflow* = 4;
  61. DivByZero* = 8;
  62. Inexact* = 16;
  63. IEEEDefaultEnv* = 0;     (*IEEE-default floating-point environment constant*)
  64.  
  65.  
  66. (*$END*)
  67.  
  68. (**======================================================================*
  69.  *    The common interface for the SANE library     *
  70.  *======================================================================**)
  71.  
  72. DecStrLen* = 255;
  73. SigDigLen* = 20;         (*for 68K; use 28 in 6502 SANE*)
  74.  
  75.  
  76. TYPE
  77.  
  78. (*ΔΔ RelOp* = (GreaterThan,LessThan,EqualTo,Unordered);*)
  79. (*ΔΔ NumClass* = (SNaN,QNaN,Infinite,ZeroNum,NormalNum,DenormalNum);*)
  80. (*ΔΔ RoundDir* = (ToNearest,Upward,Downward,TowardZero);*)
  81. (*ΔΔ RoundPre* = (ExtPrecision,DblPrecision,RealPrecision);*)
  82. (*ΔΔ DecimalKind* = (FloatDecimal,FixedDecimal);*)
  83. RelOp* = SHORTINT;
  84. NumClass* = SHORTINT;
  85. RoundDir* = SHORTINT;
  86. RoundPre* = SHORTINT;
  87. DecimalKind* = SHORTINT;
  88. CONST
  89. GreaterThan* = 0; LessThan* = 1; EqualTo* = 2; Unordered* = 3;
  90. SNaN* = 0; QNaN* = 1; Infinite* = 2; ZeroNum* = 3; NormalNum* = 4; DenormalNum* = 5;
  91. ToNearest* = 0; Upward* = 1; Downward* = 2; TowardZero* = 3;
  92. ExtPrecision* = 0; DblPrecision* = 1; RealPrecision* = 2;
  93. FloatDecimal* = 0; FixedDecimal* = 1;
  94. TYPE
  95.  
  96. (*$IF OPTION mc68881*)
  97.  
  98. (**======================================================================*
  99.  *    The interface specific to the MC68881 SANE library    *
  100.  *======================================================================**)
  101. Exception* = LONGINT;
  102.  
  103. Environment* = RECORD
  104.     FPCR*: LONGINT;
  105.     FPSR*: LONGINT;
  106.     END;
  107.  
  108. TrapVector* = RECORD
  109.     Unordered*: LONGINT;
  110.     Inexact*: LONGINT;
  111.     DivByZero*: LONGINT;
  112.     Underflow*: LONGINT;
  113.     OpError*: LONGINT;
  114.     Overflow*: LONGINT;
  115.     SigNaN*: LONGINT;
  116.     END;
  117.  
  118. (*$ELSE*)
  119.  
  120. (**======================================================================*
  121. *  The interface specific to the software SANE library      *
  122. *======================================================================**)
  123.  
  124. Exception* = INTEGER;
  125.  
  126. Environment* = INTEGER;
  127.  
  128. (* Extended96* = ARRAY [0..5] OF INTEGER;    Now defined in Types.p *)
  129.  
  130. MiscHaltInfo* = RECORD
  131.     HaltExceptions*: INTEGER;
  132.     PendingCCR*: INTEGER;
  133.     PendingD0*: LONGINT;
  134.     END;
  135.  
  136. (*$END*)
  137.  
  138. (**======================================================================*
  139. *  The common interface for the SANE library    *
  140. *======================================================================**)
  141.  
  142. DecStr* = ARRAY DecStrLen OF CHAR (*ΔΔ STRING[DecStrLen]*);
  143.  
  144. DecForm* = RECORD
  145.     style*: DecimalKind;
  146.     digits*: INTEGER;
  147.     END;
  148.  
  149. Decimal* = RECORD
  150.     sgn*: SHORTINT (*ΔΔ 0..1*);
  151.     exp*: INTEGER;
  152.     sig*: ARRAY SigDigLen OF CHAR (*ΔΔ STRING[SigDigLen]*);
  153.     END;
  154.  
  155. CStrPtr* = SYSTEM.PTR (*ΔΔ POINTER TO CHAR*);
  156.  
  157.  
  158. TYPE
  159.     Extended* = LONGREAL; (*ΔΔ NEW*)
  160.     Double* = REAL; (*ΔΔ NEW*)
  161.  
  162. (*$IF OPTION mc68881*)
  163.  
  164. (* return IEEE default environment *)
  165. PROCEDURE IEEEDefaultEnv*(): Environment;
  166.     EXTERNAL PASCAL;
  167. PROCEDURE SetTrapVector*(Traps: TrapVector);
  168.     EXTERNAL PASCAL;
  169. PROCEDURE GetTrapVector*(VAR Traps: TrapVector);
  170.     EXTERNAL PASCAL;
  171. (*•• PROCEDURE X96toX80*(x: Extended): Extended80;
  172.     EXTERNAL PASCAL;*)
  173. (*•• PROCEDURE X80toX96*(x: Extended80): Extended;
  174.     EXTERNAL PASCAL;*)
  175. (*$IF NOT Elems88*)
  176.  
  177. (* sine *)
  178. (*•• PROCEDURE Sin*(x: Extended): Extended;
  179.     EXTERNAL PASCAL;*)
  180. (*•• PROCEDURE Cos*(x: Extended): Extended;
  181.     EXTERNAL PASCAL;*)
  182. (*•• PROCEDURE ArcTan*(x: Extended): Extended;
  183.     EXTERNAL PASCAL;*)
  184. (*•• PROCEDURE Exp*(x: Extended): Extended;
  185.     EXTERNAL PASCAL;*)
  186. (*•• PROCEDURE Ln*(x: Extended): Extended;
  187.     EXTERNAL PASCAL;*)
  188. (*•• PROCEDURE Log2*(x: Extended): Extended;
  189.     EXTERNAL PASCAL;*)
  190. (*•• PROCEDURE Ln1*(x: Extended): Extended;
  191.     EXTERNAL PASCAL;*)
  192. (*•• PROCEDURE Exp2*(x: Extended): Extended;
  193.     EXTERNAL PASCAL;*)
  194. (*•• PROCEDURE Exp1*(x: Extended): Extended;
  195.     EXTERNAL PASCAL;*)
  196. (*•• PROCEDURE Tan*(x: Extended): Extended;
  197.     EXTERNAL PASCAL;*)
  198. (*$END*)
  199.  
  200. (*$ELSE*)
  201.  
  202. (* return halt vector *)PROCEDURE GetHaltVector*(): LONGINT;
  203.     EXTERNAL PASCAL;
  204. PROCEDURE SetHaltVector*(v: LONGINT);
  205.     EXTERNAL PASCAL;
  206. (*••PROCEDURE X96toX80*(x: Extended96): Extended;
  207.     EXTERNAL PASCAL;*)
  208. (*••PROCEDURE X80toX96*(x: Extended): Extended96;
  209.     EXTERNAL PASCAL;*)
  210. (*••PROCEDURE Log2*(x: Extended): Extended;
  211.     EXTERNAL PASCAL;*)
  212. (*••PROCEDURE Ln1*(x: Extended): Extended;
  213.     EXTERNAL PASCAL;*)
  214. (*••PROCEDURE Exp2*(x: Extended): Extended;
  215.     EXTERNAL PASCAL;*)
  216. (*••PROCEDURE Exp1*(x: Extended): Extended;
  217.     EXTERNAL PASCAL;*)
  218. (*••PROCEDURE Tan*(x: Extended): Extended;
  219.     EXTERNAL PASCAL;*)
  220. (*$END*)
  221.  
  222.  
  223. (**======================================================================*
  224. *  The common interface for the SANE library    *
  225. *======================================================================**)
  226.  
  227. (*---------------------------------------------------
  228. * Conversions between numeric binary types.
  229. ---------------------------------------------------*)
  230.  
  231. (*•• PROCEDURE Num2Integer*(x: Extended): INTEGER;
  232.     EXTERNAL PASCAL;*)
  233. (*•• PROCEDURE Num2Longint*(x: Extended): LONGINT;
  234.     EXTERNAL PASCAL;*)
  235. (*•• PROCEDURE Num2Real*(x: Extended): REAL;
  236.     EXTERNAL PASCAL;*)
  237. (*•• PROCEDURE Num2Double*(x: Extended): Double;
  238.     EXTERNAL PASCAL;*)
  239. (*•• PROCEDURE Num2Extended*(x: Extended): Extended;
  240.     EXTERNAL PASCAL;*)
  241. (*•• PROCEDURE Num2Comp*(x: Extended): Computational;
  242.     EXTERNAL PASCAL;*)
  243. (*•• PROCEDURE Num2Dec*(f: DecForm;x: Extended;VAR d: Decimal);
  244.     EXTERNAL PASCAL;*)
  245. (*•• PROCEDURE Dec2Num*(d: Decimal): Extended;
  246.     EXTERNAL PASCAL;*)
  247. (*•• PROCEDURE Num2Str*(f: DecForm;x: Extended;VAR s: DecStr);
  248.     EXTERNAL PASCAL;*)
  249. (*•• PROCEDURE Str2Num*(s: DecStr): Extended;
  250.     EXTERNAL PASCAL;*)
  251. PROCEDURE Str2Dec*(s: DecStr;VAR Index: INTEGER;VAR d: Decimal;VAR ValidPrefix: BOOLEAN);
  252.     EXTERNAL PASCAL;
  253. PROCEDURE CStr2Dec*(s: CStrPtr;VAR Index: INTEGER;VAR d: Decimal;VAR ValidPrefix: BOOLEAN);
  254.     EXTERNAL PASCAL;
  255. PROCEDURE Dec2Str*(f: DecForm;d: Decimal;VAR s: DecStr);
  256.     EXTERNAL PASCAL;
  257. (*•• PROCEDURE Remainder*(x: Extended;y: Extended;VAR quo: INTEGER): Extended;
  258.     EXTERNAL PASCAL;*)
  259. (*•• PROCEDURE Rint*(x: Extended): Extended;
  260.     EXTERNAL PASCAL;*)
  261. (*•• PROCEDURE Scalb*(n: INTEGER;x: Extended): Extended;
  262.     EXTERNAL PASCAL;*)
  263. (*•• PROCEDURE Logb*(x: Extended): Extended;
  264.     EXTERNAL PASCAL;*)
  265. (*•• PROCEDURE CopySign*(x: Extended;y: Extended): Extended;
  266.     EXTERNAL PASCAL;*)
  267. (*•• PROCEDURE NextReal*(x: real;y: real): real;
  268.     EXTERNAL PASCAL;*)
  269. (*•• PROCEDURE NextDouble*(x: Double;y: Double): Double;
  270.     EXTERNAL PASCAL;*)
  271. (*•• PROCEDURE NextExtended*(x: Extended;y: Extended): Extended;
  272.     EXTERNAL PASCAL;*)
  273. (*•• PROCEDURE XpwrI*(x: Extended;i: INTEGER): Extended;
  274.     EXTERNAL PASCAL;*)
  275. (*•• PROCEDURE XpwrY*(x: Extended;y: Extended): Extended;
  276.     EXTERNAL PASCAL;*)
  277. (*•• PROCEDURE Compound*(r: Extended;n: Extended): Extended;
  278.     EXTERNAL PASCAL;*)
  279. (*•• PROCEDURE Annuity*(r: Extended;n: Extended): Extended;
  280.     EXTERNAL PASCAL;*)
  281. (*•• PROCEDURE RandomX*(VAR x: Extended): Extended;
  282.     EXTERNAL PASCAL;*)
  283. (*•• PROCEDURE ClassReal*(x: REAL): NumClass;
  284.     EXTERNAL PASCAL;*)
  285. (*•• PROCEDURE ClassDouble*(x: Double): NumClass;
  286.     EXTERNAL PASCAL;*)
  287. (*•• PROCEDURE ClassComp*(x: Computational): NumClass;
  288.     EXTERNAL PASCAL;*)
  289. (*•• PROCEDURE ClassExtended*(x: Extended): NumClass;
  290.     EXTERNAL PASCAL;*)
  291. (*•• PROCEDURE SignNum*(x: Extended): INTEGER;
  292.     EXTERNAL PASCAL;*)
  293. (*•• PROCEDURE NAN*(i: INTEGER): Extended;
  294.     EXTERNAL PASCAL;*)
  295. PROCEDURE SetException*(e: Exception;b: BOOLEAN);
  296.     EXTERNAL PASCAL;
  297. PROCEDURE TestException*(e: Exception): BOOLEAN;
  298.     EXTERNAL PASCAL;
  299. PROCEDURE SetHalt*(e: Exception;b: BOOLEAN);
  300.     EXTERNAL PASCAL;
  301. PROCEDURE TestHalt*(e: Exception): BOOLEAN;
  302.     EXTERNAL PASCAL;
  303. PROCEDURE SetRound*(r: RoundDir);
  304.     EXTERNAL PASCAL;
  305. PROCEDURE GetRound*(): RoundDir;
  306.     EXTERNAL PASCAL;
  307. PROCEDURE SetPrecision*(p: RoundPre);
  308.     EXTERNAL PASCAL;
  309. PROCEDURE GetPrecision*(): RoundPre;
  310.     EXTERNAL PASCAL;
  311. PROCEDURE SetEnvironment*(e: Environment);
  312.     EXTERNAL PASCAL;
  313. PROCEDURE GetEnvironment*(VAR e: Environment);
  314.     EXTERNAL PASCAL;
  315. PROCEDURE ProcEntry*(VAR e: Environment);
  316.     EXTERNAL PASCAL;
  317. PROCEDURE ProcExit*(e: Environment);
  318.     EXTERNAL PASCAL;
  319. (*•• PROCEDURE Relation*(x: Extended;y: Extended): RelOp;
  320.     EXTERNAL PASCAL;*)
  321.  
  322.     END SANE.
  323.